1. Field of the Invention
This invention relates to functional verification of a design. More particularly, this invention relates to tools for assessing coverage of functional verification tests.
2. Description of the Related Art
Despite advances in the area of formal verification, simulation techniques are still the cornerstone of the functional verification of processors and systems. These techniques involve running test programs in environments that simulate the actual design. The design is verified by comparing the test program results from such simulation environments with results expected from the design itself. A major concern in verification by simulation is assessment of the coverage of the testing performed up to a given point.
The main technique for checking and showing that the testing has been thorough is called test coverage analysis. Simply stated, the idea is to create, in a systematic fashion, a large and comprehensive list of tasks and check that each task was covered in the testing phase. Coverage analysis can help monitor the quality of testing and direct the test generators to create tests that cover areas that have not been adequately tested. For this purpose, test coverage tools attempt to create a large and comprehensive list of tasks and to check which tasks have been covered in the testing phase.
Most coverage tools provide two types of reports—status reports and progress reports. Progress reports show how coverage progresses over time. These reports are useful in detecting when the testing is “running out of steam” and predicting its potential coverage value. Status reports show which tasks are covered and which are not, and how many times each task was covered.
One method for this purpose involves discovering and reporting large non-covered spaces (herein referred to as “holes”) in a cross-product model of the test domain. This sort of method is described in the document Hole Analysis for Functional Coverage Data, Lachish et al., 39th Design Automation Conference, DAC 2002, New Orleans, La. Holes in the coverage space expose gaps in the testing, which the user may then “plug” with additional tests. The authors describe a method for aggregating holes that are quantitatively similar, and specifically holes separated by a Hamming distance of one.